Technical Field
The present invention relates generally to information processing and, in particular, to reducing the cost of deserialization by skipping unused array regions.
Description of the Related Art
In the X10 programming language (hereinafter “X10”), an X10 “place” is a repository for data and activities, corresponding loosely to a process or a processor. Places induce a concept of “local”. The activities running in a place may access data items located at that place with the efficiency of on-chip access. On the other hand, accesses to remote places may take orders of magnitude longer.
In X10, objects cannot be referred to directly from other remote places. Instead, if an object is used in a remote place, the object is copied before being used in the remote place. The at statement in X10 allows for implicitly copying of objects.
For example, for the statement “at(p) {S}”, the data that is defined outside of at and that is used in S (that is, to execute S) is copied to a remote place p.
The data just before the at body is executed is copied to a remote place. To realize this feature, when the X10 compiler converts X10 code to Java/C++ code, at is converted to a method invocation of runAt, and the data that will be copied to a remote place is given as the arguments of the runAt method.
If a data array is used in a remote place, all of the elements in the array are copied even if only part of the array elements are actually used in the remote place. All of the array elements are copied because it is not clear which array elements will be used in a remote place before copying of the array takes place.
Thus, at the local place, it has to be determined which array elements are to be used in the remote place. Accordingly, there is a need to change the semantics of copying data in X10 and similarly operating programming languages in order to enable only the array data that is to be used at a remote place to ultimately be copied to the remote place, thus reducing deserialization at the remote place.